﻿using System;
using System.Data;
using System.Text;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Admin;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class Informes_VentasPorCliente : GenericPage
{
    #region Propiedades
    Usuarios usuario = new Usuarios();
    Clientes clienteActual = new Clientes();    
    List<Clientes> listClientes = new List<Clientes>();
    private ExceptionConstructor exNew = new ExceptionConstructor();
    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                Limpiar();

                DateTime dHoy = DateTime.Now.Date;
                FechaH.SetFecha(dHoy);
                string sFecha = SetearFecha();
                FechaD.SetFecha(Convert.ToDateTime(sFecha));

                Clientes cliente = new Clientes();
                cliente = (Clientes)Session["Cliente"];
                txtCodigo.Text = cliente.Id_Cliente.ToString();
                txtNombre.Text = cliente.Nombre;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Seguridad/Default.aspx", false);
    }
    #endregion

    #region gvVentas_PageIndexChanging
    protected void gvVentas_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            gvVentas.PageIndex = e.NewPageIndex;
            CargarGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnOtro_Click
    protected void btnOtro_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Informes/ClientesAdmin.aspx", false);
    }
    #endregion

    #region gvVentas_SelectedIndexChanged
    protected void gvVentas_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            List<Ventas> listaVentas = new List<Ventas>();
            listaVentas = (List<Ventas>)Session["listaVentas"];
            Ventas venta = new Ventas();
            venta.Id_Ventas = Convert.ToInt64(gvVentas.SelectedDataKey.Value);
            foreach (Ventas item in listaVentas)
            {
                if (venta.Id_Ventas == item.Id_Ventas)
                {
                    Session["Venta"] = item;
                    Session["Cobranza"] = "Cobranza";
                }
            }


            StringBuilder sb = new StringBuilder();
            sb.Append("~/Clientes/Cobranza.aspx");

            Response.Redirect(sb.ToString(), false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvVentas_DataBound
    protected void gvVentas_RowCreated(object sender, GridViewRowEventArgs e)
    {
        try
        {
            List<Ventas> listaVentas = new List<Ventas>();
            listaVentas = (List<Ventas>)Session["listaVentas"];
            LinkButton link;
            if ((e.Row.RowType == DataControlRowType.DataRow))
            {
                link = (LinkButton)e.Row.Cells[8].FindControl("LinkButton2");
                if (listaVentas[e.Row.RowIndex + (gvVentas.PageIndex * 10)].CtaCte == 0)
                {
                    link.Enabled = false;
                }
                else
                {
                    link.Enabled = true;
                }
                
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnVer_Click
    protected void btnVer_Click(object sender, EventArgs e)
    {
        try
        {
            if (FechaD.GetFecha() > FechaH.GetFecha())
            {
                // mensaje error en fecha
                mpeFecha.Show();
            }
            else
            {

                BMVentas bmVentas = new BMVentas(Connection);
                Ventas ventasD = new Ventas();
                Ventas ventasH = new Ventas();
                List<Ventas> listaVentas = new List<Ventas>();
                ventasD.Fecha = FechaD.GetFecha();
                ventasH.Fecha = FechaH.GetFecha();
                ventasD.Id_Estado = 1;
                ventasD.Id_Cliente = Convert.ToInt16(txtCodigo.Text.Trim());
                listaVentas = bmVentas.BMVentasSearch(ventasD, ventasH);

                int iCantidad = 0;
                Decimal dTotal = 0;
                if (listaVentas.Count > 0)
                {
                    foreach (Ventas venta in listaVentas)
                    {
                        iCantidad++;
                        dTotal += venta.Total;
                    }
                    lblCantidad.Text = iCantidad.ToString();
                    lblTotal.Text = dTotal.ToString();
                    lblTipo.Text = "Informe de VENTAS para el período";
                }
                else
                {
                    lblCantidad.Text = "0";
                    lblTotal.Text = "0";
                    lblTipo.Text = "No hay VENTAS en este período";
                }

                Session["listaVentas"] = listaVentas;
                gvVentas.DataSource = listaVentas;
                gvVentas.DataBind();
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region Limpiar
    protected void Limpiar()
    {
        try
        {
            lblAccion.Text = "Seleccione Período a Evaluar";
            lblLCantidad.Text = "Cantidad de Operaciones:";
            lblCantidad.Text = "";
            lblTotal.Text = "";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region CargarGrilla
    protected void CargarGrilla()
    {
        try
        {
            List<Ventas> listaVentas = new List<Ventas>();
            listaVentas = (List<Ventas>)Session["listaVentas"];

            gvVentas.DataSource = listaVentas;
            gvVentas.DataBind();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion
}
